package com.goldmantis.alitrip.pojo;

import com.goldmantis.alitrip.common.annotation.Display;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.persistence.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import java.util.Date;

@Table(name = "sys_log")
@ApiModel("sys_log")
public class SysLog {
    /**
     * 日志主键
     */
    @Id
    @Column(name = "log_id")
    @Display("日志主键")
    @ApiModelProperty("日志主键")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long logId;

    /**
     * 分类Id 1-登陆2-访问3-操作4-异常
     */
    @Column(name = "category_id")
    @Display("分类Id 1-登陆2-访问3-操作4-异常")
    @ApiModelProperty("分类Id 1-登陆2-访问3-操作4-异常")
    @Max(value=2147483647,message="最大值不能高于{value}")
    @Min(value=-2147483648,message="最小值不能低于{value}")
    private Integer categoryId;

    /**
     * 来源对象主键
     */
    @Column(name = "source_object_id")
    @Display("来源对象主键")
    @ApiModelProperty("来源对象主键")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String sourceObjectId;

    /**
     * 操作时间
     */
    @Column(name = "operate_time")
    @Display("操作时间")
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 操作用户
     */
    @Column(name = "operate_user_id")
    @Display("操作用户")
    @ApiModelProperty("操作用户")
    private Long operateUserId;

    /**
     * 操作账号
     */
    @Column(name = "operate_account")
    @Display("操作账号")
    @ApiModelProperty("操作账号")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String operateAccount;

    /**
     * 操作类型Id
     */
    @Column(name = "operate_type_id")
    @Display("操作类型Id")
    @ApiModelProperty("操作类型Id")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String operateTypeId;

    /**
     * 操作类型
     */
    @Column(name = "operate_type")
    @Display("操作类型")
    @ApiModelProperty("操作类型")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String operateType;

    /**
     * 系统功能主键
     */
    @Column(name = "res_id")
    @Display("系统功能主键")
    @ApiModelProperty("系统功能主键")
    @Max(value=2147483647,message="最大值不能高于{value}")
    @Min(value=-2147483648,message="最小值不能低于{value}")
    private Integer resId;

    /**
     * 系统功能
     */
    @Column(name = "res_name")
    @Display("系统功能")
    @ApiModelProperty("系统功能")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String resName;

    /**
     * ip地址
     */
    @Column(name = "ip_address")
    @Display("ip地址")
    @ApiModelProperty("ip地址")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String ipAddress;

    /**
     * 真实ip(nginx)
     */
    @Column(name = "x_real_ip")
    @Display("真实ip(nginx)")
    @ApiModelProperty("真实ip(nginx)")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String xRealIp;

    /**
     * 主机
     */
    @Display("主机")
    @ApiModelProperty("主机")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String host;

    /**
     * 浏览器
     */
    @Display("浏览器")
    @ApiModelProperty("浏览器")
    @Size(min = 0, max = 200 , message = "长度必须在{min}和{max}之间")
    private String browser;

    /**
     * 执行结果状态
     */
    @Column(name = "execute_result")
    @Display("执行结果状态")
    @ApiModelProperty("执行结果状态")
    @Max(value=2147483647,message="最大值不能高于{value}")
    @Min(value=-2147483648,message="最小值不能低于{value}")
    private Integer executeResult;

    /**
     * 其他描述
     */
    @Display("其他描述")
    @ApiModelProperty("其他描述")
    @Size(min = 0, max = 200 , message = "长度必须在{min}和{max}之间")
    private String description;

    /**
     * 逻辑删除标记
     */
    @Column(name = "is_delete")
    @Display("逻辑删除标记")
    @ApiModelProperty("逻辑删除标记")
    private Short isDelete;

    /**
     * 系统id
     */
    @Column(name = "system_id")
    @Display("系统id")
    @ApiModelProperty("系统id")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String systemId;

    /**
     * 异常类型
     */
    @Column(name = "exception_type")
    @Display("异常类型")
    @ApiModelProperty("异常类型")
    @Size(min = 0, max = 200 , message = "长度必须在{min}和{max}之间")
    private String exceptionType;

    /**
     * 扩展字段1
     */
    @Column(name = "extend_field1")
    @Display("扩展字段1")
    @ApiModelProperty("扩展字段1")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String extendField1;

    /**
     * 扩展字段2
     */
    @Column(name = "extend_field2")
    @Display("扩展字段2")
    @ApiModelProperty("扩展字段2")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String extendField2;

    /**
     * 来源日志内容
     */
    @Column(name = "source_content_json")
    @Display("来源日志内容")
    @ApiModelProperty("来源日志内容")
    @Size(min = 0, max = 65535 , message = "长度必须在{min}和{max}之间")
    private String sourceContentJson;

    /**
     * 执行结果信息
     */
    @Column(name = "execute_result_json")
    @Display("执行结果信息")
    @ApiModelProperty("执行结果信息")
    @Size(min = 0, max = 65535 , message = "长度必须在{min}和{max}之间")
    private String executeResultJson;

    /**
     * 获取日志主键
     *
     * @return log_id - 日志主键
     */
    public Long getLogId() {
        return logId;
    }

    /**
     * 设置日志主键
     *
     * @param logId 日志主键
     */
    public void setLogId(Long logId) {
        this.logId = logId;
    }

    /**
     * 获取分类Id 1-登陆2-访问3-操作4-异常
     *
     * @return category_id - 分类Id 1-登陆2-访问3-操作4-异常
     */
    public Integer getCategoryId() {
        return categoryId;
    }

    /**
     * 设置分类Id 1-登陆2-访问3-操作4-异常
     *
     * @param categoryId 分类Id 1-登陆2-访问3-操作4-异常
     */
    public void setCategoryId(Integer categoryId) {
        this.categoryId = categoryId;
    }

    /**
     * 获取来源对象主键
     *
     * @return source_object_id - 来源对象主键
     */
    public String getSourceObjectId() {
        return sourceObjectId;
    }

    /**
     * 设置来源对象主键
     *
     * @param sourceObjectId 来源对象主键
     */
    public void setSourceObjectId(String sourceObjectId) {
        this.sourceObjectId = sourceObjectId == null ? null : sourceObjectId.trim();
    }

    /**
     * 获取操作时间
     *
     * @return operate_time - 操作时间
     */
    public Date getOperateTime() {
        return operateTime;
    }

    /**
     * 设置操作时间
     *
     * @param operateTime 操作时间
     */
    public void setOperateTime(Date operateTime) {
        this.operateTime = operateTime;
    }

    /**
     * 获取操作用户
     *
     * @return operate_user_id - 操作用户
     */
    public Long getOperateUserId() {
        return operateUserId;
    }

    /**
     * 设置操作用户
     *
     * @param operateUserId 操作用户
     */
    public void setOperateUserId(Long operateUserId) {
        this.operateUserId = operateUserId;
    }

    /**
     * 获取操作账号
     *
     * @return operate_account - 操作账号
     */
    public String getOperateAccount() {
        return operateAccount;
    }

    /**
     * 设置操作账号
     *
     * @param operateAccount 操作账号
     */
    public void setOperateAccount(String operateAccount) {
        this.operateAccount = operateAccount == null ? null : operateAccount.trim();
    }

    /**
     * 获取操作类型Id
     *
     * @return operate_type_id - 操作类型Id
     */
    public String getOperateTypeId() {
        return operateTypeId;
    }

    /**
     * 设置操作类型Id
     *
     * @param operateTypeId 操作类型Id
     */
    public void setOperateTypeId(String operateTypeId) {
        this.operateTypeId = operateTypeId == null ? null : operateTypeId.trim();
    }

    /**
     * 获取操作类型
     *
     * @return operate_type - 操作类型
     */
    public String getOperateType() {
        return operateType;
    }

    /**
     * 设置操作类型
     *
     * @param operateType 操作类型
     */
    public void setOperateType(String operateType) {
        this.operateType = operateType == null ? null : operateType.trim();
    }

    /**
     * 获取系统功能主键
     *
     * @return res_id - 系统功能主键
     */
    public Integer getResId() {
        return resId;
    }

    /**
     * 设置系统功能主键
     *
     * @param resId 系统功能主键
     */
    public void setResId(Integer resId) {
        this.resId = resId;
    }

    /**
     * 获取系统功能
     *
     * @return res_name - 系统功能
     */
    public String getResName() {
        return resName;
    }

    /**
     * 设置系统功能
     *
     * @param resName 系统功能
     */
    public void setResName(String resName) {
        this.resName = resName == null ? null : resName.trim();
    }

    /**
     * 获取ip地址
     *
     * @return ip_address - ip地址
     */
    public String getIpAddress() {
        return ipAddress;
    }

    /**
     * 设置ip地址
     *
     * @param ipAddress ip地址
     */
    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress == null ? null : ipAddress.trim();
    }

    /**
     * 获取真实ip(nginx)
     *
     * @return x_real_ip - 真实ip(nginx)
     */
    public String getxRealIp() {
        return xRealIp;
    }

    /**
     * 设置真实ip(nginx)
     *
     * @param xRealIp 真实ip(nginx)
     */
    public void setxRealIp(String xRealIp) {
        this.xRealIp = xRealIp == null ? null : xRealIp.trim();
    }

    /**
     * 获取主机
     *
     * @return host - 主机
     */
    public String getHost() {
        return host;
    }

    /**
     * 设置主机
     *
     * @param host 主机
     */
    public void setHost(String host) {
        this.host = host == null ? null : host.trim();
    }

    /**
     * 获取浏览器
     *
     * @return browser - 浏览器
     */
    public String getBrowser() {
        return browser;
    }

    /**
     * 设置浏览器
     *
     * @param browser 浏览器
     */
    public void setBrowser(String browser) {
        this.browser = browser == null ? null : browser.trim();
    }

    /**
     * 获取执行结果状态
     *
     * @return execute_result - 执行结果状态
     */
    public Integer getExecuteResult() {
        return executeResult;
    }

    /**
     * 设置执行结果状态
     *
     * @param executeResult 执行结果状态
     */
    public void setExecuteResult(Integer executeResult) {
        this.executeResult = executeResult;
    }

    /**
     * 获取其他描述
     *
     * @return description - 其他描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 设置其他描述
     *
     * @param description 其他描述
     */
    public void setDescription(String description) {
        this.description = description == null ? null : description.trim();
    }

    /**
     * 获取逻辑删除标记
     *
     * @return is_delete - 逻辑删除标记
     */
    public Short getIsDelete() {
        return isDelete;
    }

    /**
     * 设置逻辑删除标记
     *
     * @param isDelete 逻辑删除标记
     */
    public void setIsDelete(Short isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 获取系统id
     *
     * @return system_id - 系统id
     */
    public String getSystemId() {
        return systemId;
    }

    /**
     * 设置系统id
     *
     * @param systemId 系统id
     */
    public void setSystemId(String systemId) {
        this.systemId = systemId == null ? null : systemId.trim();
    }

    /**
     * 获取异常类型
     *
     * @return exception_type - 异常类型
     */
    public String getExceptionType() {
        return exceptionType;
    }

    /**
     * 设置异常类型
     *
     * @param exceptionType 异常类型
     */
    public void setExceptionType(String exceptionType) {
        this.exceptionType = exceptionType == null ? null : exceptionType.trim();
    }

    /**
     * 获取扩展字段1
     *
     * @return extend_field1 - 扩展字段1
     */
    public String getExtendField1() {
        return extendField1;
    }

    /**
     * 设置扩展字段1
     *
     * @param extendField1 扩展字段1
     */
    public void setExtendField1(String extendField1) {
        this.extendField1 = extendField1 == null ? null : extendField1.trim();
    }

    /**
     * 获取扩展字段2
     *
     * @return extend_field2 - 扩展字段2
     */
    public String getExtendField2() {
        return extendField2;
    }

    /**
     * 设置扩展字段2
     *
     * @param extendField2 扩展字段2
     */
    public void setExtendField2(String extendField2) {
        this.extendField2 = extendField2 == null ? null : extendField2.trim();
    }

    /**
     * 获取来源日志内容
     *
     * @return source_content_json - 来源日志内容
     */
    public String getSourceContentJson() {
        return sourceContentJson;
    }

    /**
     * 设置来源日志内容
     *
     * @param sourceContentJson 来源日志内容
     */
    public void setSourceContentJson(String sourceContentJson) {
        this.sourceContentJson = sourceContentJson == null ? null : sourceContentJson.trim();
    }

    /**
     * 获取执行结果信息
     *
     * @return execute_result_json - 执行结果信息
     */
    public String getExecuteResultJson() {
        return executeResultJson;
    }

    /**
     * 设置执行结果信息
     *
     * @param executeResultJson 执行结果信息
     */
    public void setExecuteResultJson(String executeResultJson) {
        this.executeResultJson = executeResultJson == null ? null : executeResultJson.trim();
    }


    @Transient
    @Display("分类名称")
    @ApiModelProperty("分类名称")
    private String categoryName;

    public String getCategoryName() {
        return categoryName;
    }

    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
}